There are many situations where sensor data is used for tracking changes between an environment and a sensor in the environment. For example, to track pose of a camera which is moving through the environment on a robot or vehicle, or to track pose of an object moving in the field of view of a static camera. Sensors for monitoring environmental conditions such as temperature, humidity, wind speed, light levels, sound, and other conditions may also be used to track changes in those conditions. Many other types of sensors are known and may be used to track changes in physical conditions. The tracked changes are typically used for controlling equipment such as robots, computing devices, mechanical equipment and others. As a result, accuracy and speed of tracking is important. It is also important to be able to detect tracking errors and to be able to recover from those. For example, a tracking system on a moving robot may lose track of its pose as a result of sudden changes in its motion, changes in the environment such as a person walking in front of the camera, or for other reasons.
Some approaches to tracking using sensor data make use of a process describing how the sensed data is generated. For example, a carbon cycle process which may be used to explain or predict temperature changes; or a calendar process which may be used to explain changes in outdoor light levels over days and months. In the case of tracking pose of a moving camera, the process may be a rendering process which uses a current pose of the camera and a 3D model of the camera's environment to render an image that can “explain” an empirically observed image at the camera. Typically the process for describing how the sensed data is generated is specified mathematically and comprises a plurality of parameters whose values change over time and are to be tracked. Tracking using sensor data may comprise using the sensed data to repeatedly compute values of parameters of a generative process describing how the sensed data occurs.
Previous approaches to computing values of parameters of these types of generative processes have involved computing minimizations which involve searching over very large numbers of possible parameter values. The minimizations are time consuming and complex to compute and take up valuable computing resources. Once a solution to a minimization is computed it may be that the solution is a local solution rather than the best global solution. This is problematic as the accuracy of tracking is then reduced. For example, computing a minimization often comprises selecting a starting point and then making a gradient descent type search to find a minimum. Selecting a good starting point is often difficult, especially where there is no good solution to use from a previous situation (such as a previous frame of a video stream, or a previous segment of a stream of measurements). Selecting a poor starting point may result in finding a local minimum which is inaccurate compared with the global minimum.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known systems for tracking using sensor data.